Python:为什么运行 Flask 开发服务器会自行运行两次? 您所在的位置:网站首页 flask 运行python程序 Python:为什么运行 Flask 开发服务器会自行运行两次?

Python:为什么运行 Flask 开发服务器会自行运行两次?

2023-03-22 13:41| 来源: 网络整理| 查看: 265

Werkzeug 重新加载器生成一个子进程,以便它可以在每次代码更改时重新启动该进程。 Werkzeug 是在您调用app.run()时为 Flask 提供开发服务器的库。

查看restart_with_reloader()函数代码;使用subprocess.call()再次运行您的脚本。

如果将use_reloader设置为False ,您会看到该行为消失,但您也会失去重新加载功能:

app.run(port=4004, debug=config.DEBUG, host='0.0.0.0', use_reloader=False)

您也可以在使用flask run命令时禁用重新加载程序:

FLASK_DEBUG=1 flask run --no-reload

如果您想检测何时处于重新加载子进程中,可以使用werkzeug.serving.is_running_from_reloader函数:

from werkzeug.serving import is_running_from_reloader if is_running_from_reloader(): print(f"################### Restarting @ {datetime.utcnow()} ###################")

但是,如果您需要设置模块全局变量,那么您应该在函数上使用@app.before_first_request装饰器并让该函数设置此类全局变量。当第一个请求进来时,每次重新加载后它只会被调用一次:

@app.before_first_request def before_first_request(): print(f"########### Restarted, first request @ {datetime.utcnow()} ############")

请注意,如果您在使用分叉或新子进程处理请求的全面 WSGI 服务器中运行它,则可能会为每个新子进程调用before_first_request处理程序。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有